BCH codes are well known and powerful class of block error-correcting codes. The BCH codes are widely used in numerous applications, such as data storage systems, network and wireless communications. A feature of the BCH codes is that information is transmitted in blocks of symbols of a predefined length. An encoder adds extra parity symbols to each block of information to produce a codeword. Some symbols in the codeword sometimes become corrupted when the codeword is transmitted through a noisy channel. A decoder accepts the corrupted codeword and uses the parity symbols to recover from the errors added by the channel. Two parameters are used by a BCH encoder and a BCH decoder, a codeword length and a maximum error limit. The codeword length is the length of the information block plus the amount of parity symbols. The maximum error limit defines whether the decoder is able to correct a corrupted received block or not. If the channel adds no more errors than the maximum error limit, the decoder guarantees proper recovery of the data, otherwise the decoder can fail to correct the errors or provide the wrong results.